package com.ltkj.shop.service;

import java.util.List;

import com.ltkj.common.core.web.domain.AjaxResult;
import com.ltkj.shop.domain.ShopCart;
import com.ltkj.shop.domain.vo.ShopCartVo;

/**
 * 文创购物车Service接口
 * 
 * @author xupf
 * @date 2023-08-29
 */
public interface IShopCartService 
{
    /**
     * 查询文创购物车
     * 
     * @param id 文创购物车主键
     * @return 文创购物车
     */
    public ShopCart selectShopCartById(Long id);

    /**
     * 查询文创购物车列表
     * 
     * @param shopCart 文创购物车
     * @return 文创购物车集合
     */
    public List<ShopCart> selectShopCartList(ShopCart shopCart);

    /**
     * 移动端查询文创购物车列表
     *
     * @param shopCart 文创购物车
     * @return 文创购物车集合
     */
    List<ShopCartVo> selectList(ShopCart shopCart);

    /**
     * 新增文创购物车
     * 
     * @param shopCart 文创购物车
     * @return 结果
     */
    public AjaxResult insertShopCart(ShopCart shopCart);

    /**
     * 修改文创购物车
     * 
     * @param shopCart 文创购物车
     * @return 结果
     */
    public int updateShopCart(ShopCart shopCart);

    /**
     * 批量删除文创购物车
     * 
     * @param ids 需要删除的文创购物车主键集合
     * @return 结果
     */
    public int deleteShopCartByIds(Long[] ids);

    /**
     * 删除文创购物车信息
     * 
     * @param id 文创购物车主键
     * @return 结果
     */
    public int deleteShopCartById(Long id);

    /**
     * 统计当前用户购物车数量
     * @return
     */
    Long countByUser();

    /**
     * 清空购物车
     *
     * @param userId   用户id
     * @param goodsIds
     * @param types
     * @return
     */
    AjaxResult deleteByUser(Long userId, Long[] goodsIds, String[] types);
}
